/*
 * @Description: cors跨域资源共享 客户端 
 * @Author: BaldHead
 * @Date: 2022-03-25 19:27:01
 * @LastEditTime: 2022-03-26 17:53:34
 * @LastEditors: Please set LastEditors
 */
import axios from 'axios';
import qs from 'qs';
axios.defaults.baseURL = "";
axios.defaults.timeout = 10000;
axios.defaults.withCredentials = true;
/**
 * 设置请求 传递数据的格式（服务器要什么）
 * application/X-WWW-form-urlencode
 * raw
 * formdata
 */
axios.defaults.headers['content-Type'] = 'application/X-WWW-form-urlencode';
axios.defaults.transformRequest = data => {
        qs.stringify(data)
    }
    /**
     * 设置请求拦截器 
     * token验证(JWT)：
     * 接收服务器返回的token，存储服务器返回的token，存储到vue/本地存储中，
     * 每一次向服务器发请求，我们应该把token带上
     * 服务器 第二接收token，通过jwt进行token验证  
     */
axios.interceptors.request.use(config => {
        let token = localStorage.getItem('token');
        token && (config.headers.Authorization = token);
        return config
    }, error => {
        return Promise.reject(error);
    })
    /**
     * 响应拦截器
     */
axios.interceptors.response.use(response => {
    return response.data;
}, error => {
    /**
     * 1. 拿得到东西  状态码有问题
     * 2.拿不到东西   服务器挂了  断网处理
     */
})
export default axios;
// 服务端 node+express
app.use((req, res, next) => {
        //访问请求源
        res.header("Access-Contorl-Allow-Origin", "*"); //* 所有源的请求都允许  不能加cookie，不能携带资源凭证
        res.header("Access-Contorl-Allow-Origin", ""); //允许源（一个）才能访问
        res.header("Access-Contorl-Allow-Credentials", true); //携带资源凭证
        res.header("Access-Contorl-Allow-Headers", "Content-Type,Content-Length,Authorization.Accept,X-Requested-With"); //允许哪些请求头能过来
        res.header("Access-Contorl-Allow-Methods", "PUT，POST,GET,DELETE,OPTION,HEAD"); //允许哪些请求方式
        req.method === 'OPTIONS' ? res.send("CURRENT SERVICES SUPPORT CROSS DOMAIN REQUESTS!") : next();
    }) //